// 02/03/97 TWB Added reshape override to reset the columns during runtime
// Added a get/set ColumnSizes properties/methods so that widths
// can be determined at design time
// Added a get/set ColumnAlignments properties/methods so that alignments
// can be determined at design time
// 02/06/97 TWB Added check for null strings in setListItems
// Integrated TGL's change for getListItems
// 03/14/97 RKM Made changeSelection public as per customer request
// 03/17/97 TGL Fixed multilists in tab panels (actually, multilists added to anything
// without a peer)
// 03/20/97 RKM Added forceRedraw flag to handle more efficient redraws
// Set forceRedraw in addTextCell, addImageCell, & addCell so changes would
// redrawn into offscreen
// Changed all redraw followed by repaints to use forceRedraw flag
// 03/21/97 RKM Removed repaint hack from paint
// 03/25/97 RKM Removed forced call to redraw from repaint when designing (Why was that there???)
// 03/27/97 TNM Added horizontal ScrollBar
// 03/27/97 RKM Changed getCellText to return empty String if the elementAt throws
// instead of throwing or as the code thought, return null
// Added getCellImage
// 03/27/97 RKM Changed hard coded numbers for sbVWidth & sbHHeight to use prefferedSize of scrollbars
// 04/09/97 RKM Changed CompareCells' lessThan method to handle nulls passed to it (this removes the nullPointException, but doesn't fix the sort problem)
// 04/17/97 LAB Added Don Haney's (haney@tiac.net) fixes that addressed:
// Column widths revert to default after hide()/show(); modified setHeading(String h, int i, int pixels)
// Return from getColumnSize() inconsistent with setHeading(); modified getColumnSize() to return splitters[i + 1], rather than splitters[i]
// Scrollbar values and number of items to draw incorrectly set. Fix in redraw().
// 05/02/97 RKM Changed setHeadings to accept String of ; as well as array
// Added calcHeadings to handle a delayed calulation of headings when add had not been called before setHeadings
// Generalized handling of either String[] or ; separated tokens and added it to setHeadings, setColumnAlignments, & setColumnSizes
// Added removeRow (people on the newsgroup wanted this)
// 05/22/97 RKM Changed setSelectedRow to call changeSelection
/**
* Multi-column listbox component.
* Use to create a box that displays a matrix of items that the user can
* select. The user cannot type or edit a selection in a list box.
* <p>
* The user can resize a column at run-time by dragging the column boundary
* to a new position.
* <p>
* @version 1.01, Feb 3, 1997
* @author Symantec
*/
public class MultiList
extends Panel
{
/**
* Time to register a double click (in milliseconds).